# 1-导包
from config import host
from api import log


# 2-定义一个接口的封装类
class ApiRegisterLogin:
    """
    注册登录模块接口封装层
    """

    # 定义初始化函数（构造函数）
    def __init__(self, session):
        # 获取图片验证码请求url
        self.img_code_url = host + "/common/public/verifycode1/{}"
        # 获取短信验证码请求url
        self.phone_code_url = host + "/member/public/sendSms"
        # 注册接口请求url
        self.register_url = host + "/member/public/reg"
        # 登录接口请求url
        self.login_url = host + "/member/public/login"
        # 查询登录状态接口请求url
        self.login_status_ulr = host + "/member/public/islogin"

        # 获取session对象，赋值给类的属性变量
        self.session = session


    # 1- 获取图片验证码接口 封装
    def api_img_code(self, r=0.123): # r=0.123是默认值，后续可以传递参数，没有传递就使用默认值，有传递参数就使用参数值
        # 执行获取图片验证码http请求，返回请求的响应对象赋值给一个变量
        log.info("调用获取图片验证码接口测试，请求方法：{}，请求参数：{}，请求的url：{}".format("get",r,self.img_code_url.format(r)))
        res = self.session.get(url=self.img_code_url.format(r))  # format方法实现将{}替换为random
        # 将变量（接口http请求的响应对象）返回
        return res

    # 2- 获取短信验证码接口 封装
    def api_phone_code(self, phone, imgVerifyCode, type="reg"):
        # 定义接口请求参数
        data = {"phone": phone, "imgVerifyCode": imgVerifyCode, "type": type}
        # 执行获取图片验证码http请求，返回请求的响应对象赋值给一个变量
        log.info("调用获取短信验证码接口测试，请求方法：{}，请求参数：{}，请求的url：{}".format("post",data,self.phone_code_url))
        res = self.session.post(url=self.phone_code_url, data=data)
        # 将变量（接口http请求的响应对象）返回
        return res

    # 3-注册接口 封装
    def api_register(self, phone, password, verifycode, phone_code, dy_server="on", invite_phone=""):
        # 定义接口请求参数
        data = {"phone": phone, "password": password, "verifycode": verifycode, "phone_code":phone_code,
                "dy_server": dy_server, "invite_phone": invite_phone}
        # 执行注册接口http请求，返回请求的响应对象赋值给一个变量
        log.info("调用注册接口测试，请求方法：{}，请求参数：{}，请求的url：{}".format("post",data,self.register_url))
        res = self.session.post(url=self.register_url, data=data)
        # 将变量（接口http请求的响应对象）返回
        return res

    # 4- 登录接口 封装
    def api_login(self, keywords, password):
        # 定义接口请求参数
        data = {"keywords": keywords, "password": password}
        # 执行登录接口http请求，返回请求的响应对象赋值给一个变量
        log.info("调用登录接口测试，请求方法：{}，请求参数：{}，请求的url：{}".format("post",data,self.login_url))
        res = self.session.post(url=self.login_url, data=data)
        # 将变量（接口http请求的响应对象）返回
        return res

    # 5- 查询登录状态接口 封装
    def api_login_status(self):
        # 执行查询登录状态http请求，返回请求的响应对象赋值给一个变量
        log.info("调用查询登录状态接口测试，请求方法：{}，请求的url：{}".format("post",self.login_url))
        res = self.session.post(url=self.login_status_ulr)
        # 将变量（接口http请求的响应对象）返回
        return res
